
#ifndef _TTG_STRUCTURES_TAGGED_OBJECTS_
#define _TTG_STRUCTURES_TAGGED_OBJECTS_
#include "Common/Definitions.h"

namespace ttg
{
	namespace structures
	{
		//Represents objects, which can contain some tag.
		template <class TagType>
		class TaggedObject
		{
			private:
				TagType taggedobject_tag;
			public:
				//Creates empty object.
				inline TaggedObject()
					:taggedobject_tag()
						{ /*nothing*/ }
				//Returns assigned tag.
				inline TagType &getTag()
						{ return taggedobject_tag; }
				//Assignes tag.
				inline void setTag(const TagType &tag)
						{ this->taggedobject_tag = tag; }
				virtual ~TaggedObject()
						{ /*nothing*/ }
		};
	}
}

#endif
